var sequeue = require('seq-queue');

var manager = module.exports;

var queues = {};//保存任务队列

manager.timeout = 3000;     //延时30ms

/**
 * Add tasks into task group. Create the task group if it dose not exist.
 * 添加任务到工作组 如果任务组不存在则创建
 *
 * @param {String}   key       task key     索引任务队列的key
 * @param {Function} fn        task callback    任务回调
 * @param {Function} ontimeout task timeout callback    任务超时回调
 */
manager.addTask = function(key, fn, ontimeout) {
  var queue = queues[key];//索引任务队列
  if(!queue) {//任务队列不存在
    queue = sequeue.createQueue(manager.timeout);//创建一个任务队列
    queues[key] = queue;//保存任务队列
  }

  return queue.push(fn, ontimeout);//添加任务到队列
};

/**
 * Destroy task group   //销毁任务组
 *
 * @param  {String} key   task key
 * @param  {Boolean} force whether close task group directly
 */
manager.closeQueue = function(key, force) {
  if(!queues[key]) {
        // ignore illeagle key
    //忽略非法的key
    return;
  }

  queues[key].close(force);//关闭任务队列
  delete queues[key];//删除任务队列
};
